<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2017 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Free Software" and "Free Software Needs
Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: "You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Branch Trace Format</title>

<meta name="description" content="Debugging with GDB: Branch Trace Format">
<meta name="keywords" content="Debugging with GDB: Branch Trace Format">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Remote-Protocol.html#Remote-Protocol" rel="up" title="Remote Protocol">
<link href="Branch-Trace-Configuration-Format.html#Branch-Trace-Configuration-Format" rel="next" title="Branch Trace Configuration Format">
<link href="Traceframe-Info-Format.html#Traceframe-Info-Format" rel="prev" title="Traceframe Info Format">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Branch-Trace-Format"></a>
<div class="header">
<p>
Next: <a href="Branch-Trace-Configuration-Format.html#Branch-Trace-Configuration-Format" accesskey="n" rel="next">Branch Trace Configuration Format</a>, Previous: <a href="Traceframe-Info-Format.html#Traceframe-Info-Format" accesskey="p" rel="prev">Traceframe Info Format</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Branch-Trace-Format-1"></a>
<h3 class="section">E.19 Branch Trace Format</h3>
<a name="index-branch-trace-format"></a>

<p>In order to display the branch trace of an inferior thread,
<small>GDB</small> needs to obtain the list of branches.  This list is
represented as list of sequential code blocks that are connected via
branches.  The code in each block has been executed sequentially.
</p>
<p>This list is obtained using the &lsquo;<samp>qXfer:btrace:read</samp>&rsquo;
(see <a href="General-Query-Packets.html#qXfer-btrace-read">qXfer btrace read</a>) packet and is an XML document.
</p>
<p><small>GDB</small> must be linked with the Expat library to support XML
traceframe info discovery.  See <a href="Requirements.html#Expat">Expat</a>.
</p>
<p>The top-level structure of the document is shown below:
</p>
<div class="smallexample">
<pre class="smallexample">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE btrace
          PUBLIC &quot;+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN&quot;
                 &quot;http://sourceware.org/gdb/gdb-btrace.dtd&quot;&gt;
&lt;btrace&gt;
   block...
&lt;/btrace&gt;
</pre></div>

<ul>
<li> A block of sequentially executed instructions starting at <var>begin</var>
and ending at <var>end</var>:

<div class="smallexample">
<pre class="smallexample">&lt;block begin=&quot;<var>begin</var>&quot; end=&quot;<var>end</var>&quot;/&gt;
</pre></div>

</li></ul>

<p>The formal DTD for the branch trace format is given below:
</p>
<div class="smallexample">
<pre class="smallexample">&lt;!ELEMENT btrace  (block* | pt) &gt;
&lt;!ATTLIST btrace  version CDATA   #FIXED &quot;1.0&quot;&gt;

&lt;!ELEMENT block        EMPTY&gt;
&lt;!ATTLIST block        begin  CDATA   #REQUIRED
                       end    CDATA   #REQUIRED&gt;

&lt;!ELEMENT pt (pt-config?, raw?)&gt;

&lt;!ELEMENT pt-config (cpu?)&gt;

&lt;!ELEMENT cpu EMPTY&gt;
&lt;!ATTLIST cpu vendor   CDATA #REQUIRED
              family   CDATA #REQUIRED
              model    CDATA #REQUIRED
              stepping CDATA #REQUIRED&gt;

&lt;!ELEMENT raw (#PCDATA)&gt;
</pre></div>




</body>
</html>
